/*
*
* 点赞接口
*/


const express = require('express');
const router = express.Router();
const passport = require('passport');

const UP = require('../../models/Up');
const ArticleList = require('../../models/ArticleList');


//$rote GET api/zan
// @desc 返回请求的json数据
// @access public
router.get('/',(req,res)=>{
    res.send (`
/**
*   [post] /add
*   param:{
*       articleId:文章的id
*       upuserId:用户的id
*       upuser:用户名
*   }
*/  
/***
 * [delete] unzan/:id
 *  status : true  成功  false 失败
 */
 /***
 * 根据用户id 和文章id查询 是否当前用户有没有点赞改文章
 * [get] /change/?upuserId='用户id'&articleId=‘文章id’
 *
 */
    `)
});
/***
 * [post] 点赞
 * articleId：文章id
 * upuser：点赞用户
 * upuserId：点赞用户id
 */
router.post('/add',passport.authenticate('jwt',{session:false}),(req,res)=>{
    const likeFileldes = {};
    if(req.body.articleId) likeFileldes.articleId = req.body.articleId;
    if(req.body.upuser) likeFileldes.upuser = req.body.upuser;
    if(req.body.upuserId) likeFileldes.upuserId = req.body.upuserId;
    // 查询用户有没有点赞这篇文章
    UP.findOne({upuserId:likeFileldes.upuserId,articleId:likeFileldes.articleId }).then(isZan=>{
        if(isZan){
            return res.status(400).json('文章已点赞！')
        } else {
            new UP(likeFileldes).save().then(like => {
                //更新文章中点赞数量
                ArticleList.findOne({_id:likeFileldes.articleId}).then(list=>{
                    if(list){
                        const like = list.upnum+1;
                        ArticleList.findOneAndUpdate(
                            { _id:likeFileldes.articleId },
                            { $set: { upnum: like } },
                            {new:true}
                        ).then(ss=>{

                        })
                    }
                });
                res.json(like)
            }).catch(err=>res.status(400).json(err))
        }
    })
});

/***
 * [delete] unzan/:id
 *
 */
router.delete('/unzan/:id',passport.authenticate('jwt',{session:false}),(req,res)=>{
    console.log(req.params.id)
    
    UP.findOneAndRemove({_id:req.params.id}).then(like=>{
        //更新文章中关注数量
        ArticleList.findOne({_id:like.articleId}).then(list=>{
            if(list){
                const likeNum = list.upnum-1;
                ArticleList.findOneAndUpdate(
                    { _id:like.articleId },
                    { $set: { upnum: likeNum } },
                    {new:true}
                ).then(ss=>{

                })
            }
        });
        like.save().then(like=>res.json({like,msg:'删除成功!',status:true}))
    }).catch(err=>res.status(404).json({msg:'删除失败!',status:false}))
});


/***
 * 根据用户id 和文章id查询 是否当前用户有没有点赞改文章
 * [get] /change/?upuserId='用户id'&articleId=‘文章id’
 *
 */
router.get('/change',passport.authenticate('jwt',{session:false}),(req,res)=>{
    let query = {};
    if(req.query.upuserId){
        query['upuserId']=req.query.upuserId
    }
    if(req.query.articleId){
        query['articleId']=req.query.articleId
    }
    UP.findOne(query).then(like=>{
        if(!like){
            return res.status(404).json('点赞的没有查找到');
        }
        res.json(like)
    }).catch(err=>res.status(404).json(err))
});
module.exports = router;